【玩坏 MV】制作音游的思路过程(2) | 您所在的位置:网站首页 › rm 音游 › 【玩坏 MV】制作音游的思路过程(2) |
事件 ID 超长章节预警,本章分分页式与一页式两节。 事件 ID(分页式)我们想要做的音游经过多次试错,修改方案,最终终于敲定使用 “触发条件:并行处理(获取指定位置的信息)” 的形式进行制作。可喜可贺可喜可贺!让我们来看看现在的画面布置是怎么样的吧。(为了使画面简洁,我把我原本地图上表示区域的指示牌删掉了) 音符:就是音符(note); 音符驱动器:告诉每一个音符怎么运动,是要快还是慢;是要直直走还是上蹿下跳(左右横跳)。最好是一列音符放一个,(相当是一个小节?),专门只控制这一列的音符(编辑器里也不会写太多,太难找),方便制作者调整。一列音符运动完就换下一个音符驱动器; 音游启动器:玩家走到上面按下 确定键 开始音游。同时换新的事件页并行处理,玩家移动路线等待,以此来阻止玩家在音游中移动影响音游; 音符位置读取器:其实应该叫做音符 ID 读取器,它能时时读取 miss_previous,prefect,miss_after 上的事件 ID,以此来了解当前应该对哪一个音符(事件)进行判断; miss_previous:判定点前一格。如果玩家过早(也就是在这里)按下了互动键,则判定当前的音符失败; prefect:判定点。如果玩家在这里按下互动键,则判定当前的音符成功,加一分; miss_after:判定点后一格。如果玩家过了 prefect(判定点)还没按下互动键(也就是到达了 miss_after),则直接判定当前的音符失败(也就是说,miss_previous 和 prefect 都需要检查玩家是否有按下互动键,但是到了 miss_after 就不用了) (其实我原本打算是读取事件 ID 的任务一起交给 音游启动器,但是发现如果 音游启动器 一边担负着限制玩家移动的任务,一边又要读取事件 ID,会导致游戏比较严重的掉帧,所以最后将 音符位置读取器 单独分了出来) 之后我又发现,无论在 音游启动器 里让玩家等待多少帧,玩家都有一定几率可以移动。所以最后我干脆取消了 “让玩家等待来限制玩家移动” 的方式,改为 “音游开始的时候玩家四方都出现与玩家相同优先级不可穿透的事件(阻拦器)” 以此来限制玩家移动。 接下来让我们详细地看看具体是怎么设定的吧。 为了使我的记录更加清晰,我打算从变量和开关开始下手,简化掉其中一些我比较累赘的思考历程。 音游阶段:你需要告诉游戏开始了,然后现在进行到那一个阶段,这个阶段指的不是小到针对每一个音符,而是用来控制 音符驱动器,告诉游戏现在应该开启哪一个 音符驱动器 了。最后游戏结束了,也是通过这个变量来告诉游戏。总之我们的思路就是:将小的细节的东西(音符),交给一个比较大的东西(音符驱动器)来控制,最后我们只要统一管理这个比较大的东西就可以掌控全局了。有一个分级的概念; 音游得分:只要有一个音符判定为成功就加一分,失败则分数不变,最后可以用来看成功了几个音符; miss_previous:判定点前一格上是否有音符(事件),有就读取其事件 ID,没有则为 0; prefect:判定点上是否有音符(事件),有就读取其事件 ID,没有则为 0; miss_after:判定点后一格上是否有音符(事件),有就读取其事件 ID,没有则为 0; combo:当前连击数; MAX combo:最大连击数; 长按失败:音游里有一些连起来的音符需要你整个过程长按互动键,一旦你中间松开了互动键,前面已经成功的音符不会受到影响,但是长按音中当前的音和后续的音都会直接判定为失败; combo:是否连击失败; 校准(一个回合):校准用的音符是否从右到左走完了一个回合。后两个开关会在后续文章详细解释; 开始校准:是否开始校准; 这些变量和开关其实是和我们游戏进程的思路紧密相关的,现在我们来看看我们的游戏进程思路: 了解完游戏进程(至少有个设计思路),我们就可以对我们的事件进行编写了。 音游启动器用于启动音游 其实 音游启动器 只有第一个事件页有干事情,后面都在摸鱼。原本打算让它限制玩家移动,可惜它干不了这活……注意,最后一页的 出现条件 里的变量 音游阶段 >=2,是因为我测试的时候,只做了(column=)1 列音符,所以最后要表明这个音游结束了就得是变量 音游阶段 = column+1(==2)(音符列数加一) 音符位置读取器用于读取经过判定点前中后的事件 ID 当一个读取点上的事件多于一个的时候,它只会告诉你 ID 比较大的那个。最后一页结束的出现条件跟 音游启动器 一样,都使变量 音游阶段 = 音符列数 +1。 阻拦器它们其实没啥工作的实质性内容,单纯只是为了阻碍玩家的移动,避免影响音游。它们的出现时候的出现条件以及消失时候的出现条件都和 音符位置读取器 一样。 音符驱动器驱动音符运动 排号,等到变量 音游阶段 到了自己负责的序号的时候,就驱动音符运动;等自己的负责序号过了之后,就暂停工作;它的第一页里的 设置移动路线 部分就是按照你想要的意思移动每一个音符的移动路线。 注意,最好不要在移动路线里的左下角选项那里给 等待完成 打勾,否则后面的音符都得等前面的音符运动完才可以动。但是有一个特例,那就是最后一列的 音符驱动器 控制的最后一个音符,这个音符就必须加上 等待完成,否则音游会在最后一列音符开始运动的时候结束。因为其实 音符驱动器 告知音符怎么运动都是一瞬间的事情,只要前面其他音符没有 等待完成,后面的音符都是可以和前面的音符几乎是同时获得指令运动。音符获得运动指令之后就不需要 音符驱动器 了。 另外,音符驱动器 需要操控音符达到的位置可以参考这个:(这里的是否分页,指的是音符事件内,判定音符是否操作成功的指令是否在同一个事件页内) 如果判断为分页式:音符驱动器让音符到达第一个触发点(miss_previous)如果判断为一页式:音符驱动器让音符到达最后一个触发点(miss_after)其中左图为分页式:它的第一页为等待音符到达判定点,二三四页为判定页(分别对应 miss_previous,prefect,miss_after),最后五六页为显示成功与否图像且不再参与任何判定的事件页(失败,成功) 而右图为一页式:它的第一页融合了所有的判定,第二三页为显示成功与否图像且不再参与任何判定的事件页(失败,成功) 为什么不同形式(分页式 / 一页式)的 音符 需要 音符驱动器 驱动到的最后位置不一样呢? 这是因为,事件之前接收的 移动路线,一旦在这个事件更换事件页就会立马失效。在分页式的情况下,它到达 miss_previous 就需要从第一页换到第二个事件页,这时候之前哪怕 音符驱动器 给它下再多的 移动路线 命令都没有用,只要之后再没有后续新的 移动路线 指令,它就会停下来(不只是影响到自身的移动,甚至会影响到后续其他音符的判定)。 而一页式的情况中,它在判定点前中后都不换页,直到到 miss_after 后才换页到最后两页显示成功与否图像,所以 音符驱动器 必须驱动它达到的最后位置就是 miss_after。 当然,你在 音符驱动器 里可以写非常长的 移动路线 甚至是超过所需的内容,只要你到达了我上面所说的两种情况分别所需达到的点就行,只是后面的内容都不会应用。所以这里我说的就是最精简的模式。 如果这部分你单纯看这里的文字看不懂,可以看接下来 音符 部分的具体表现,再来结合这段文字(最好有实际操作测试),可能更能明白这里的理论。 音符最后出场的就是压轴的 音符,它们分别有 单击音、长按音序列。长按音序列 包括 长按音·伯(开头第一个)、长按音·仲(中间部分)、长按音·季(最后一个)。 强烈建议其他所有事件都建完了,最后再来建 音符,以达到它们的事件 ID 都是连续的目的另外,建议在一个新的地图把每四种 音符 的模板都设定好了,然后再直接复制进你制作音游的那个地图,可以极大地提高效率。 所以最好的制作方案,就是你一开始就在选择音乐 / 制作音乐的时候就选好所有节拍点(音符),并确定它们的类型。否则因为事件 ID 的连续性,后期要改可能比较麻烦。(但其实这并不是死规定,不一定要完全连续,只是后面的音符的事件 ID 一定要比前面的大就行,连续只是为了容易读以及好看) 单击音 长按音·伯 长按音·仲 好吧,每种音符(分页式)第一页都是空的(余同)…… 所有失败 / 成功页都很接近,不再赘述。 长按音·季 完成了上述内容,一个既有 单击音 又有 长按音 音游的基础设定就完成了,你就可以依照前面的模板完成一个完整的音游。另外要注意的是,经过反复测试,本方案目前的所有判定点在实际操作中都会往前半格,这并不是什么大的问题,你只要在制作以及绘制 miss_previous、prefect、miss_after 的图块时,将它们往前移动半格就行。 思考时曾经尝试的老方案请点击后再查看 思考时曾经尝试的老方案 一开始的思考方向是给所有有分歧条件判断开关 长按失败 里都加了关闭开关 长按失败。 可发现不在关闭开关 长按失败 前面加比较短的等待的话,如果 长按音序列 比较长,后续几个 长按音 都会因为太快关掉开关 长按失败,没能接收到这个开关关闭过的消息,导致它们还是依旧可以继续进行判定,所以我才在前面加了等待一帧。 后来我才意识到 长按音·仲 完全不需要关闭开关 长按失败 啊,完全可以交给最为最后一个的 长按音·季 来关闭,所以有了现在的你们刚刚看到的在 spoilerblock 之外的方案。 事件 ID(一页式)正如前面在 事件 ID(分页式)里所说的一样,一页式和分页式的主要差别在 音符 的事件里,它的判定方法是否有合为一页。 其它不一样的就是,音符驱动器 控制 音符 最远路线的差别: 如果判断为分页式:音符驱动器让音符到达第一个触发点(miss_previous)如果判断为一页式:音符驱动器让音符到达最后一个触发点(miss_after)(这里的是否分页,指的是音符事件内,判定音符是否操作成功的指令是否在同一个事件页内)这一小节是 事件 ID(一页式),就让我们看看如何把所有判定方法合为一页吧。 P.S. 前面说了那么多,图里也有注释,我就不额外在这里打注解了。另外这里只展示 单击音 的第一页,二三页就是常规的空白结算页(失败 / 成功)。因为其他的都和 事件 ID(分页式)的差不多,所以都不再展示。剩余其他的 音符 道理也差不多,根据 事件 ID(分页式)里对应的内容,再结合 单击音(一页式)就可以做出来了。 单击音 未完待续…… 最后一章将介绍 音符消失、Combo、 校准、音游刷新重置所有音符 等内容。 |
CopyRight 2018-2019 实验室设备网 版权所有 |